feof関数は、ファイルポインタで示されるストリームのEOF(end of file)の状態を調べます。
#include <stdio.h>
int feof(FILE *stream);
*streamはfopen関数で取得した、ファイルポインタを指定します。
戻り値として、EOFであれば0以外の値を返します。
入力関数の多くはEOF(end of file)あるいは、エラーを検出したらEOF値を返しますので、EOFなのかエラーなのか分かりません。そのような場合に、feof関数でEOFの状態か否かを調べることができます。
プログラム 例
#include <stdio.h> int main(void) { FILE *fp; int in_data; if ((fp = fopen('temp.txt', 'r')) != NULL) { while((in_data = fgetc(fp)) != EOF) { putchar(in_data); } if (feof(fp) != 0) { printf('正常に入力しました\n'); } else { printf('入力エラーです\n'); } fclose(fp); } else { printf('ファイルのオープンに失敗しました\n'); } return 0; }
例の実行結果
$ cat temp.txt Hello World!!. $ $ ./feof.exe Hello World!!. 正常に入力しました $